home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C++ / Snippets / QuickCamObjects / CQCamPane.cp next >
Encoding:
Text File  |  1995-12-05  |  3.3 KB  |  182 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    CQCamPane.cp                    A pane using the newly created CQuickCam obj
  3. // ===========================================================================
  4. //
  5. //    12/2/95        Finsihed CQuickCam enought to try this out.
  6.  
  7.  
  8. #include    "CQCamPane.h"
  9.  
  10. #include    <LStream.h>
  11. // ---------------------------------------------------------------------------
  12. //        • Constant declarations
  13. // ---------------------------------------------------------------------------
  14.  
  15. #pragma mark • Constructors/Destructors
  16. // ---------------------------------------------------------------------------
  17. //        • CreateGraphPane
  18. // ---------------------------------------------------------------------------
  19. //    Static constructor used in URegistrar
  20. CGrabPane*
  21. CGrabPane::CreateGrabPaneStream( LStream* inStream )
  22. {
  23.     return    (new CGrabPane(inStream) );
  24. }
  25.  
  26.  
  27. CGrabPane::CGrabPane( LStream* inStream )
  28.     : LPane( inStream ), CQuickCam( printerPort, 1 )
  29. {
  30.     grabPict = nil;
  31. }
  32.  
  33. CGrabPane::CGrabPane( void ) : CQuickCam( printerPort, 1 )
  34. {
  35.     grabPict = nil;
  36. }
  37.  
  38. CGrabPane::~CGrabPane( void )
  39. {
  40.     StopRepeating();
  41.     if ( grabPict ) KillPicture( grabPict );
  42. }
  43.  
  44. #pragma mark -
  45. #pragma mark • LPeriodical override
  46.  
  47. void    
  48. CGrabPane::SpendTime(const EventRecord &inMacEvent)
  49. {
  50.  
  51.     Rect    paneFrame;
  52.     CalcPortFrameRect( paneFrame );
  53.         
  54.     UpdateVideo();
  55.     DrawVideo( (CGrafPtr)GetMacPort(), paneFrame );
  56. }
  57.  
  58. #pragma mark -
  59. #pragma mark • LPane essentials
  60.  
  61. void
  62. CGrabPane::DrawSelf()
  63. {
  64.  
  65.     Rect    paneFrame;
  66.     CalcPortFrameRect( paneFrame );
  67.     
  68.     // Set the videoFrame to an appropriate size.
  69.     OptVideoRect( paneFrame );
  70.     
  71. //    UpdateVideo();
  72. //    DrawVideo( (CGrafPtr)GetMacPort(), paneFrame );
  73. }
  74.  
  75. void
  76. CGrabPane::ClickSelf(const SMouseDownEvent &inMouseDown)
  77. {
  78.     Rect    paneFrame;
  79.         
  80.     CalcPortFrameRect( paneFrame );
  81.     ::InsetRect( &paneFrame, 30, 30 );
  82.     for( int i = 20; --i; )    {// about 10 passes.
  83.         SpotMeter( paneFrame );
  84.         DrawSelf();
  85.         }
  86.  
  87. }
  88.  
  89. void
  90. CGrabPane::EventMouseUp(const EventRecord &inMacEvent)
  91. {
  92.     LPane::EventMouseUp( inMacEvent );
  93. //    GrabPict();
  94. }
  95.  
  96. //
  97. //    Fire up the sequencer.
  98. void
  99. CGrabPane::FinishCreateSelf()
  100. {
  101.     StartRepeating();
  102. }
  103.  
  104. #define VDOnOff( s )    if ( s ) StartRepeating(); \
  105.                         else     StopRepeating();
  106.  
  107. void
  108. CGrabPane::EnableSelf()
  109. {    VDOnOff( vdPlayThruOn );    }
  110.  
  111. void
  112. CGrabPane::DisableSelf()
  113. {    VDOnOff( vdPlayThruOff );    }
  114.  
  115. void
  116. CGrabPane::ShowSelf()
  117. {    VDOnOff( vdPlayThruOn );    }
  118.  
  119. void
  120. CGrabPane::HideSelf()
  121. {    VDOnOff( vdPlayThruOff );    }
  122.  
  123. void
  124. CGrabPane::ActivateSelf()
  125. {    VDOnOff( vdPlayThruOn );    }
  126.  
  127. void
  128. CGrabPane::DeactivateSelf()
  129. {    VDOnOff( vdPlayThruOff );    }
  130.  
  131.  
  132. #pragma mark -
  133. #pragma mark • Public methods
  134.  
  135. void
  136. CGrabPane::RunCompressionDialog( void )
  137. {
  138. }
  139.  
  140. void
  141. CGrabPane::RunGrabberDialog( void )
  142. {
  143. }
  144.  
  145. #pragma mark -
  146. #pragma mark • Protected methods
  147. void
  148. CGrabPane::UpdateBuffer( void )
  149. {
  150. }
  151.  
  152. void
  153. CGrabPane::DrawBuffer( void )
  154. {
  155. }
  156.  
  157.  
  158. #pragma mark -
  159. #pragma mark • Private Methods
  160.  
  161. // This method adjusts the videoRectangle to be an appropriate size for the
  162. //    pane size.  The smaller the video rectangle the faster the update.  No
  163. //    reason to send data to a rectangle bigger than the pane.
  164. void
  165. CGrabPane::AdjustRectangles( void )
  166. {
  167.  
  168.     Rect    paneFrame;
  169.         
  170.     CalcPortFrameRect( paneFrame );
  171.     OptVideoRect( paneFrame );
  172. }
  173.  
  174. void
  175. CGrabPane::AutoContrast( Rect& r )
  176. {
  177.     Rect    paneFrame;
  178.         
  179.     CalcPortFrameRect( paneFrame );
  180.     SpotMeter( paneFrame );
  181. }
  182.